from flask import session, current_app, g
from info.models import User
import  functools

# 定义过滤器,转换索引
def index_convert(index):
    index_dict = {
        1: "first",
        2: "second",
        3: "third"
    }

    return index_dict.get(index, "")


# 查询用户登陆信息
# 定义一个闭包对登陆函数进行装饰
def user_login_data(f):
    @functools.wraps(f)  #该装饰器可以让闭包使用指定的函数
    def wrapper(*args, **kwargs):
        # 1. 判断用户是否登陆，从session中取userid
        user_id = session.get("user_id")
        user = None
        if user_id:  # 已登录
            # 2. 根据用户userid取出用户信息
            try:
                user = User.query.get(user_id)
            except BaseException as e:
                current_app.logger.error(e)

        g.user = user
        return f(*args, **kwargs)

    return wrapper


access_key = "kJ8wVO7lmFGsdvtI5M7eQDEJ1eT3Vrygb4SmR00E"
secret_key = "rGwHyAvnlLK7rU4htRpNYzpuz0OHJKzX2O1LWTNl"
bucket_name = "infonews"  # 存储空间名称
# 使用第三方七牛平台保存图片
def img_upload(data):
    """
    上传图片
    :param data: 上传的文件
    :return:  生成的文件名
    """
    import qiniu


    q = qiniu.Auth(access_key, secret_key)
    key = None  # 文件名, 如果不设置, 会生成随机文件名
    token = q.upload_token(bucket_name)
    # 上传文件
    ret, info = qiniu.put_data(token, key, data)

    if ret is not None:
        return ret.get("key")  # 获取生成的随机文件名
    else:
        raise BaseException(info)
